#include "RingBuffer.h"
#include <unistd.h>
using namespace lxp;
void *Consumer(void *args)
{
    RingBuffer<int> *ring_buffer = static_cast<RingBuffer<int> *>(args);
    while (true)
    {
        sleep(2);
        // sleep(1);
        // 1. 消费数据
        int data;
        ring_buffer->Pop(&data);

        // 2. 处理：花时间
        std::cout << "消费了一个数据: " << data << std::endl;
    }
    return nullptr;
}

void *Productor(void *args)
{
    RingBuffer<int> *ring_buffer = static_cast<RingBuffer<int> *>(args);
    int data = 0;
    while (true)
    {
        // 1. 获取数据：花时间
        // sleep(1);

        // 2. 生产数据
        ring_buffer->Equeue(data);
        std::cout << "生产了一个数据: " << data << std::endl;
        data++;
    }
    return nullptr;
}
int main()
{
    RingBuffer<int> *ring = new RingBuffer<int>(5);
    pthread_t p, c;
    pthread_create(&c, nullptr, Consumer, ring);
    pthread_create(&p, nullptr, Productor, ring);

    pthread_join(p, nullptr);
    pthread_join(c, nullptr);
    return 0;
}